home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.ivb.jface.plus;
-
- import com.ibm.ivb.jface.Action;
- import com.ibm.ivb.jface.MenuComponentData;
- import com.ibm.ivb.jface.MenuData;
- import com.ibm.ivb.jface.MenuItemData;
- import com.ibm.ivb.jface.NullEvent;
- import com.ibm.ivb.jface.Tool;
- import com.ibm.ivf.ui.browser.interfaces.IElement;
- import com.ibm.ivf.ui.browser.interfaces.IIndexedProperty;
- import com.ibm.ivf.ui.browser.interfaces.IProperty;
- import java.awt.Component;
- import java.awt.Point;
- import java.awt.Rectangle;
- import javax.swing.JScrollPane;
- import javax.swing.JTree;
- import javax.swing.tree.TreeModel;
- import javax.swing.tree.TreePath;
-
- public class TreeViewer extends ToolViewer {
- private static final String fgIBMCopyright = "(c) Copyright IBM Corporation 1998";
- protected JScrollPane scrollPane;
- protected JTree tree = this.createTree();
- protected static TreeModelAdapter emptyModel = null;
- protected String childrenPropertyName = "children";
- protected ToolViewer.PopupListener popupListener;
-
- public TreeViewer() {
- JTree var10000 = this.tree;
- this.getClass();
- ((Component)var10000).addMouseListener(new ToolViewer.PopupListener(this));
- this.tree.setModel(emptyModel);
- this.tree.setCellRenderer(new MyTreeCellRenderer(this));
- this.tree.setRootVisible(false);
- this.tree.setShowsRootHandles(true);
- this.tree.setLargeModel(true);
- this.tree.addTreeSelectionListener(new TreeListener(this));
- this.tree.putClientProperty("JTree.lineStyle", "Angled");
- }
-
- protected JTree createTree() {
- return new JTree();
- }
-
- protected TreeModel createTreeModel(IElement var1, IProperty var2, String var3) {
- return new TreeModelAdapter(var1, (IIndexedProperty)var2, var3);
- }
-
- public void domainChanged(IElement var1, String var2, IElement var3) {
- if (var1 == null) {
- ((ToolViewer)this).updateInput(((ToolViewer)this).getCurrentElement());
- } else if (var3 != null && var3 == ((ToolViewer)this).getCurrentElement()) {
- ((ToolViewer)this).updateInput(((ToolViewer)this).getCurrentElement());
- } else {
- if (var2 == null || var2.equals(((ToolViewer)this).getCurrentPropertyName()) || var2.equals(this.childrenPropertyName) || var2.equals("name") || var2.equals("icon")) {
- TreeModelAdapter var4 = (TreeModelAdapter)this.tree.getModel();
- boolean var5 = false;
- Object var6 = null;
- TreePath var7;
- if (var1 != var4.getRoot()) {
- var7 = this.findVisible(new TreePath(var4.getRoot()), var1);
- if (var7 != null) {
- var4.treeNodeChanged(var7, var3);
- var5 = true;
- }
- } else {
- var7 = new TreePath(var1);
- var4.treeNodeChanged(var7, var3);
- if (var2.equals("name") || var2.equals("icon")) {
- ((Tool)this).setTitleIcon(var1.getIcon());
- ((Tool)this).setTitle(var1.getName());
- }
-
- var5 = true;
- }
-
- if (var5) {
- if (var3 != null && !var3.isDeleted()) {
- this.tree.expandPath(this.makeNewPath(var7, var3));
- }
-
- this.tree.repaint();
- }
- }
-
- }
- }
-
- public TreePath findVisible(TreePath var1, IElement var2) {
- try {
- if (!this.tree.isVisible(var1)) {
- return null;
- }
- } catch (NullPointerException var9) {
- }
-
- Object var3 = var1.getLastPathComponent();
- if (var3.equals(var2)) {
- return var1;
- } else if (!this.tree.isExpanded(var1)) {
- return null;
- } else {
- TreeModelAdapter var4 = (TreeModelAdapter)this.tree.getModel();
- int var5 = var4.getChildCount(var3);
- Object[] var6 = new Object[var1.getPathCount() + 1];
- System.arraycopy(var1.getPath(), 0, var6, 0, var6.length - 1);
-
- for(int var7 = 0; var7 < var5; ++var7) {
- var6[var6.length - 1] = var4.getChild(var3, var7);
- TreePath var8 = this.findVisible(new TreePath(var6), var2);
- if (var8 != null) {
- return var8;
- }
- }
-
- return null;
- }
- }
-
- public Component getPrintableView() {
- return this.tree;
- }
-
- public Component getView() {
- return ((ToolViewer)this).createScrollPane(this.tree);
- }
-
- public void inputChanged(IElement var1, IProperty var2) {
- if (var1 == null) {
- this.tree.setModel(emptyModel);
- ((Tool)this).fireLinkEvent(new NullEvent(this));
- } else {
- this.tree.setModel(this.createTreeModel(var1, var2, this.childrenPropertyName));
- }
-
- this.tree.invalidate();
- this.tree.validate();
- this.tree.repaint();
- }
-
- void internalToolInstalled() {
- String var1 = (String)((Tool)this).getParameter("children");
- if (var1 != null) {
- this.childrenPropertyName = var1;
- }
-
- }
-
- private boolean isClickOnCanvas(Point var1) {
- int var2 = this.tree.getClosestRowForLocation(var1.x, var1.y);
- if (var2 == -1) {
- return true;
- } else {
- Rectangle var3 = this.tree.getRowBounds(var2);
- if (var3 != null && var3.contains(var1)) {
- int[] var4 = this.tree.getSelectionRows();
-
- for(int var5 = 0; var4 != null && var5 < var4.length; ++var5) {
- if (var4[var5] == var2) {
- return false;
- }
- }
-
- return true;
- } else {
- return true;
- }
- }
- }
-
- private void linkToolAndActions(MenuData var1) {
- for(int var2 = 0; var2 < var1.getMenuItemCount(); ++var2) {
- MenuComponentData var3 = var1.getMenuItemAt(var2);
- if (var3 instanceof MenuData) {
- this.linkToolAndActions((MenuData)var3);
- } else if (var3 instanceof MenuItemData) {
- MenuItemData var4 = (MenuItemData)var3;
- Action var5 = var4.getAction();
- if (var5 != null) {
- var5.setTool(this);
- }
- }
- }
-
- }
-
- private TreePath makeNewPath(TreePath var1, IElement var2) {
- Object[] var3 = new Object[var1.getPathCount() + 1];
- System.arraycopy(var1.getPath(), 0, var3, 0, var3.length - 1);
- var3[var3.length - 1] = var2;
- return new TreePath(var3);
- }
-
- // $FF: synthetic method
- static boolean access$0(TreeViewer var0, Point var1) {
- return var0.isClickOnCanvas(var1);
- }
-
- // $FF: synthetic method
- static void access$1(TreeViewer var0, MenuData var1) {
- var0.linkToolAndActions(var1);
- }
- }
-